package cloudPayAdmin.util;

import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import com.alibaba.fastjson.JSONObject;
import com.jfinal.weixin.sdk.utils.HttpUtils;
import com.project.m.api.common.util.SpringUtils;

/**
 * 百度地图调用工具类
 * 详细字段说明见 http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
 * @author hyj
 *
 */
public class BMapUtil {
	
	private static final Logger logger = Logger.getLogger(BMapUtil.class);
	
	public final static String ADDRESS_TO_LOCATION_URL = "http://api.map.baidu.com/geocoder/v2/?output=json&address=";
	
	public static Map getLocationByAddress(String address) {
		if(StringUtils.isNotEmpty(address)) {
			String url = ADDRESS_TO_LOCATION_URL + address + "&ak=" + SpringUtils.getProperty("baidu.map.webapi.key");
			String resp = HttpUtil.get(url);
			logger.info("getLocationByAddress resp: " + resp);
			return JSONObject.parseObject(resp, Map.class);
		}
		return null;
	}
	
	public static void main1(String[] args) {
		//120511311
		//at.d2h01p1bct9s8l7s8kxpjxouauilhf8c-5bybci88c7-0vs91ss-wyeaesbce
		String resp = HttpUtils.post("https://open.ys7.com/api/lapp/device/capture?accessToken=at.d2h01p1bct9s8l7s8kxpjxouauilhf8c-5bybci88c7-0vs91ss-wyeaesbce&deviceSerial=120511311&channelNo=1", "");
		System.out.println(formatJson(resp));
	}
	
	 public static String formatJson(String json)
	    {
	        StringBuffer result = new StringBuffer();

	        int length = json.length();
	        int number = 0;
	        char key = 0;
	        //遍历输入字符串。
	        for (int i = 0; i < length; i++)
	        {
	            //1、获取当前字符。
	            key = json.charAt(i);

	            //2、如果当前字符是前方括号、前花括号做如下处理：
	            if((key == '[') || (key == '{') )
	            {
	                //（1）如果前面还有字符，并且字符为“：”，打印：换行和缩进字符字符串。
	                if((i - 1 > 0) && (json.charAt(i - 1) == ':'))
	                {
	                    result.append('\n');
	                    result.append(indent(number));
	                }

	                //（2）打印：当前字符。
	                result.append(key);

	                //（3）前方括号、前花括号，的后面必须换行。打印：换行。
	                result.append('\n');

	                //（4）每出现一次前方括号、前花括号；缩进次数增加一次。打印：新行缩进。
	                number++;
	                result.append(indent(number));

	                //（5）进行下一次循环。
	                continue;
	            }

	            //3、如果当前字符是后方括号、后花括号做如下处理：
	            if((key == ']') || (key == '}') )
	            {
	                //（1）后方括号、后花括号，的前面必须换行。打印：换行。
	                result.append('\n');

	                //（2）每出现一次后方括号、后花括号；缩进次数减少一次。打印：缩进。
	                number--;
	                result.append(indent(number));

	                //（3）打印：当前字符。
	                result.append(key);

	                //（4）如果当前字符后面还有字符，并且字符不为“，”，打印：换行。
	                if(((i + 1) < length) && (json.charAt(i + 1) != ','))
	                {
	                    result.append('\n');
	                }

	                //（5）继续下一次循环。
	                continue;
	            }

	            //4、如果当前字符是逗号。逗号后面换行，并缩进，不改变缩进次数。
	            if((key == ','))
	            {
	                result.append(key);
	                result.append('\n');
	                result.append(indent(number));
	                continue;
	            }

	            //5、打印：当前字符。
	            result.append(key);
	        }

	        return result.toString();
	    }
	 
	  private static String indent(int number)
	    {
	        StringBuffer result = new StringBuffer();
	        for(int i = 0; i < number; i++)
	        {
	            result.append("   ");
	        }
	        return result.toString();
	    }

}
